﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GenericsDemo
{
    // generic клас 
    public class GenericPoint<T>
    {
        private T x;
        private T y;

        public T Y
        {
            get
            {
                return y;
            }
            set
            {
                y = value;
            }
        }

        public T X
        {
            get
            {
                return x;
            }
            set
            {
                x = value;
            }
        }

        public void SetX(T x)
        {
            this.x = x;            
        }
        public void SetY(T y)
        {
            this.y = y;
        }

        public T GetY()
        {
            return this.x;
        }

        public T GetX()
        {
            return this.x;
        }

        public override string ToString()
        {
            return string.Format("X: {0} Y: {1}",x,y);
        }


        public GenericPoint()
        {
            // default(T) ініціалізує значенням по замовчуванню для конкретного типа
            x = default(T);
            y = default(T);
        }
    }
}
